package com.buba.service;

import entity.staff.Accounting;
import com.baomidou.mybatisplus.extension.service.IService;
import entity.staff.dto.saveAccountDto;
import entity.staff.dto.updateAccSecurityDto;
import entity.staff.dto.withAccumPerDto;
import entity.staff.dto.withSocialPerDto;
import entity.staff.vo.accountingVo;
import utils.PageResult;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author beisheng
 * @since 2023-03-14
 */
public interface AccountingService extends IService<Accounting> {

    /* *
     * @Author: beisheng
     * @Descriprion: 根据多个用户id查询用户数据
     * @Date: 2023/3/15 19:57
     * @Return: java.util.List<entity.staff.Accounting>
     * @Param: [splitLiss]
     */

    List<Accounting> selstaffByIds(List<String> splitLiss);

    /* *
     * @Author: beisheng
     * @Descriprion: 根据社保方案id分页模糊查询关联的人员
     * @Date: 2023/3/16 10:56
     * @Return: java.util.List<entity.staff.Accounting>
     * @Param: [socialPerDto]
     */

    PageResult selstaffBySocial(withSocialPerDto socialPerDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 给员工绑定社保方案
     * @Date: 2023/3/17 9:42
     * @Return: common.R
     * @Param: [saveAccountDto]
     */

    void saveAccountToSocial(saveAccountDto saveAccountDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 批量将用户解绑色社保方案
     * @Date: 2023/3/17 13:47
     * @Return: void
     * @Param: [ids]
     */

    void updateACCScheme(List<String> ids);

    /* *
     * @Author: beisheng
     * @Descriprion: 给员工绑定公积金方案
     * @Date: 2023/3/17 9:42
     * @Return: common.R
     * @Param: [saveAccountDto]
     */

    void saveAccountToAccumulation(saveAccountDto saveAccountDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 根据公积金方案id分页模糊查询关联的人员
     * @Date: 2023/3/16 10:56
     * @Return: java.util.List<entity.staff.Accounting>
     * @Param: [socialPerDto]
     */

    PageResult selstaffByAccum(withAccumPerDto accumPerDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 给员工绑定公积金方案
     * @Date: 2023/3/17 9:42
     * @Return: common.R
     * @Param: [saveAccountDto]
     */

    void saveAccountToAccum(saveAccountDto saveAccountDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 批量将用户解绑公积金方案
     * @Date: 2023/3/17 13:47
     * @Return: void
     * @Param: [ids]
     */

    void updateAccumScheme(List<String> ids);

    /* *
     * @Author: beisheng
     * @Descriprion: 再更改方案关联人员的时候给员工解绑或者绑定方案
     * @Date: 2023/3/19 20:28
     * @Return: void
     * @Param: [updateAccSecurityDto]
     */

    void updateAccSecurity(updateAccSecurityDto updateAccSecurityDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 再更改方案关联人员的时候给员工解绑或者绑定方案
     * @Date: 2023/3/19 20:28
     * @Return: void
     * @Param: [updateAccSecurityDto]
     */

    void updateAccum(updateAccSecurityDto updateAccSecurityDto);

    /* *
     * @Author: beisheng
     * @Descriprion: 查询当前社保关联的人员是否绑定参保档案
     * @Date: 2023/3/20 13:36
     * @Return: java.util.List<entity.staff.Accounting>
     * @Param: [saId]
     */

    List<Accounting> selInsurancefile(Integer saId);

    /* *
     * @Author: beisheng
     * @Descriprion: 查询当前公积金关联的人员是否绑定参保档案
     * @Date: 2023/3/20 13:36
     * @Return: java.util.List<entity.staff.Accounting>
     * @Param: [saId]
     */

    List<Accounting> selInsurancefiles(Integer saId);

    /* *
     * @Author: beisheng
     * @Descriprion: 根据人员参保状态模糊查分页查询人员信息
     * @Date: 2023/3/20 19:08
     * @Return: common.R
     * @Param: [status]
     */

    PageResult selAccountBystatus(Map<String,Object> map);

    /* *
     * @Author: beisheng
     * @Descriprion: 分页查询参保人员信息以及人员关联社保公积金基本信息
     * @Date: 2023/3/21 16:37
     * @Return: common.R
     * @Param: [map]
     */

    PageResult selAccAndSocialAndAccum(Map<String, Integer> map);

    /* *
     * @Author: beisheng
     * @Descriprion: 办理减员,停保
     * @Date: 2023/3/21 20:05
     * @Return: common.R
     * @Param: [accId]
     */

    void Suspension(Integer accId);

    List<Accounting> selAllPeopleHasNoSocial(List<Integer> ids);

    List<accountingVo> selAllAccountBystatus();
}
